package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.MrpFeedingLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 补料单数据明细访问对象接口。
 *
 * @author 吴旭
 */
public interface MrpFeedingLinesRepository extends GenericRepository<MrpFeedingLinesEntity, String> {

    /**
     * 根据补料单标识取得补料单明细。
     *
     * @param headerKey 补料单标识
     * @return 补料单计划明细
     */
    List<MrpFeedingLinesEntity> fetchByHeaderKey(Long headerKey);

    /**
     * 从剪切板粘贴数据
     *
     * @param criterion 剪切板数据
     * @return 影响行数
     */
    Integer insertFromClipboard(Map<String, Object> criterion);

    /**
     * 引入类似的补料单明细。
     *
     * @param headerKey 当前补料单标识
     * @param importedBillHeaderKey 要引入的补料单标识
     * @param maxOrderNo 当前最大顺序号
     * @param updatedBy 操作者
     * @return 影响行数
     */
    Integer importLinesFromOtherBill(Long headerKey, Long importedBillHeaderKey, Integer maxOrderNo, Long updatedBy);

    /**
     * 通过料号更改当前补料单明细的材料。
     *
     * @param linesId 当前明细行ID
     * @param materialId 要更改的材料ID
     * @return 影响行数
     */
    Integer updateLinesByMaterialId(String linesId, Long materialId);

    /**
     * 重置补料单明细的序号,从最后一个开始开始
     * <p>
     * @param headerKey 所属补料单标识
     * @return
     */
    Integer resetLinesOrder(Long headerKey);

    /**
     * 更新补料单明细排列顺序。
     *
     * @param itemsList 所选补料单
     * @return 影响行数
     */
    Integer updateLinesOrder(List<MrpFeedingLinesEntity> itemsList);
}
